/**
 * 
 */
package com.rhf.core.services;

import java.util.ArrayList;
import java.util.List;

import com.rhf.core.commons.logging.AppLog;
import com.rhf.core.commons.logging.AppLogManager;
import com.rhf.core.db.services.UtilisateurService;
import com.rhf.core.dto.UtilisateurVO;

/**
 * @author fabiensaulnier
 * 
 */
public class UtilisateurServices {

	/**
	 * V�rifie l'existence d'un utilisateur � partir d'un objet UtilisateurV0
	 * 
	 * @param utilisateurVO
	 * @return bool�en
	 * @throws Exception
	 */
	public static boolean verifierExistenceUtilisateur(UtilisateurVO utilisateurVO) throws Exception {

		String login = utilisateurVO.getLogin();
		if (login == null || login.trim().length() == 0) {
			throw new Exception("Impossible de v�rifier l'existence de l'utilisateur car le login n'est pas d�fini");
		}

		String motDePasse = utilisateurVO.getMotDePasse();
		if (motDePasse == null || motDePasse.trim().length() == 0) {
			throw new Exception("Impossible de v�rifier l'existence de l'utilisateur car le mot de passe n'est pas d�fini");
		}

		UtilisateurVO utilisateurVO2 = UtilisateurService.recupererUtilisateur(login, motDePasse);

		if (utilisateurVO2 != null) {
			return true;
		} else {
			return false;
		}

	}

	/**
	 * R�cup�re un utilisateur � partir de son login et son mot de passe
	 * 
	 * @param login
	 * @param motDePasse
	 * @return
	 * @throws Exception
	 */
	public static UtilisateurVO recupererUtilisateur(String login, String motDePasse) throws Exception {

		return UtilisateurService.recupererUtilisateur(login, motDePasse);

	}

	/**
	 * R�cup�re un utilisateur � partir de son identifiant
	 * 
	 * @param utilisateurId
	 * @return
	 * @throws Exception
	 */
	public static UtilisateurVO recupererUtilisateur(int utilisateurId) throws Exception {

		return UtilisateurService.recupererUtilisateur(utilisateurId);

	}

	/**
	 * Modifie un utilisateur � partir d'un objet utilisateur.
	 * 
	 * @param utilisateurVO
	 * @return 1 si l'objet utilisateur est modifi�
	 * @throws Exception
	 */
	public static int modifierUtilisateur(UtilisateurVO utilisateurVO) throws Exception {

		// Log manageur
		AppLog appLog = AppLogManager.getServiceLogger();

		int utilisateurId = utilisateurVO.getUtilisateurId();
		if (!(utilisateurId > 0)) {
			appLog.error("Impossible de modifier l'utilisateur :: Impossible de r�cup�rer son identifiant");
			throw new Exception("Impossible de modifier l'utilisateur :: Impossible de r�cup�rer son identifiant");
		}

		return UtilisateurService.modifierUtilisateur(utilisateurVO);
	}

	/**
	 * R�cup�ration de la liste de tous les utilisateurs
	 * 
	 * @return Liste des utilisateurs
	 * @throws Exception
	 */
	public static List<UtilisateurVO> recupererListeUtilisateur() throws Exception {

		// Log manageur
		AppLog appLog = AppLogManager.getServiceLogger();

		appLog.debug("R�cup�ration de la liste des utilisateurs");
		List<UtilisateurVO> list = new ArrayList<UtilisateurVO>();
		list = UtilisateurService.recupererListeUtilisateur();
		appLog.debug("Nombre d'utilisateurs [" + list.size() + "]");

		return list;

	}

}
